home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Languages / Ms Fortran 7.7 / README.DOC < prev   
Text File  |  1995-07-29  |  10KB  |  271 lines

  1. RELEASED BY:-
  2.  
  3. WAJID SHARIF
  4. SOFTWARE BANK
  5. 84-GROUND FLOOR, HAFEEZ CENTRE, GULBERG III,
  6. LAHORE. PH. 5752808 - 5761408.
  7. *--------------------------------------------*
  8. FORTRAN 77 VER 3.10
  9.  
  10. 1.0  INTRODUCTION
  11.  
  12.      This describes changes to MS-Fortran that were made too
  13. late  to  be described in either the reference manual or the
  14. User's Guide and its addendum.
  15.  
  16.  
  17.  
  18. 2.0  FILES ON DISTRIBUTION DISKS
  19.  
  20. Fortran compiler.
  21.  
  22. a. FOR1.EEM        -  FORTRAN compiler using 8087 emulation code.
  23.    FOR1.EXE        -  Identical to FOR1.EEM.
  24.  
  25. b. FOR1.E87        -  FORTRAN compiler using 8087 code.
  26.  
  27.    Unless  special  arrangements  have  been  made  with  Microsoft, the
  28.    emulation compiler  utilizes  8086-88  interrupt  vectors  52-63  for
  29.    real number  emulation  and the 8087 compiler vectors 8087 interrupts
  30.    through vector 3 ( NMI ).
  31.    
  32.  
  33. Code generation.
  34.  
  35. c. PAS2.EXE        -  8086-87 code generator.
  36. d. PAS3.EXE        -  8086-87 object file disassembler.
  37.  
  38. Runtime support.
  39.  
  40. e. FORTRAN.LEM     -  FORTRAN 8087 emulation library.
  41. f. FORTRAN.L87     -  FORTRAN 8087 library.
  42.  
  43. Support documents.
  44.  
  45. g.  README.DOC      -  Current release information.
  46. h.  FORTRAN.P87     -  Link map of the 8087 FORTRAN library.
  47. i.  FORTRAN.PEM     -  Link map of the emulation FORTRAN library.
  48.  
  49. Support software.
  50.  
  51. j.  LINK.V1         -  Microsoft object linker for MS-DOS 1.25
  52. k.  LINK.V2         -  Microsoft object linker for MS-DOS 2.00
  53.  
  54. Support objects.
  55.  
  56. l.  NULF.OBJ        -  The dummy file system.
  57. m.  NULE6.OBJ       -  The dummy error system.
  58. n.  NULR7.OBJ       -  The dummy real number system.
  59.  
  60. Support source.
  61.  
  62. o.  ENTX6L.ASM      -  Execution control module assembler source.
  63. p.  DEMO.FOR        -  Demonstration program.
  64.                                                       Page 2
  65.  
  66.  
  67.  
  68. 3.0  ALTERNATIVE LINKER
  69.  
  70.      Two versions of the MS-LINK utility are  provided  with
  71. this version of MS Fortran.  The first, named LINK.V1 is the
  72. most current linker for MS-DOS versions 1.25 and below.   It
  73. will  run  under  MS-DOS  2.0 but cannot accept pathnames or
  74. subdirectories.  The other is named  LINK.V2  and  will  run
  75. only   on   MS-DOS   2.0.    The  limits  on  program  size,
  76. relocations, externals  per  module  etc.,  are  bigger  for
  77. LINK.V2  than  for  either  LINK.V1  or  the  linker usually
  78. supplied with MS-DOS 2.0.  The interface to both linkers  is
  79. identical  and  is as described in the linker documentation.
  80. You should rename the one you want to use LINK.EXE.
  81.  
  82.  
  83.  
  84. 4.0  $MESSAGE METACOMMAND
  85.  
  86.      The $MESSAGE metacommand can be used to  send  messages
  87. to the standard output device when running the Fortran front
  88. end, for example:
  89. $MESSAGE 'This will appear on the screen when you run FOR1'
  90.  
  91.  
  92.  
  93. 5.0  EXTENDED NON-DECIMAL NUMBERS
  94.  
  95.      Although the maximum 32-bit integer value is defined as
  96. 2**31-1, the compiler and runtime will read values which are
  97. nominally in the range upto 2**32 without giving an error if
  98. the radix is other than 10.  They will be interpreted as the
  99. negative   numbers   with   the    corresponding    internal
  100. representation.  For example, 16#FFFFFFFF will result in all
  101. the bits in the 32-bit integer result being  set,  and  will
  102. have an arithmetic value of -1.
  103.  
  104.  
  105.  
  106. 6.0  FLOATING POINT OPERATIONS
  107.  
  108.      Most  users  of  MS-Fortran  will  find   the   default
  109. behaviour  of  the  floating  point  operations will provide
  110. extremely accurate, consistent and efficient  processing  of
  111. their  algorithms,  whether  they  have an 8087 installed or
  112. not.  If this is the case for you, you need not be concerned
  113. with the issues described either below or in the addendum to
  114. the User's Guide.
  115.  
  116.  
  117.      However, those who wish to take advantage of  the  full
  118. power and flexiblity of the proposed IEEE Real Math Standard
  119. should read both the addendum and the following  description
  120. carefully.
  121.                                                       Page 3
  122.  
  123.  
  124. 6.1  Math Package Size
  125.  
  126.      The REAL arithmetic support routines  contribute  about
  127. 8k  bytes  to  your program and not 4.5k as specified in the
  128. addendum.  Note that if your program does not  use  floating
  129. point  you  can  use  NULR7.OBJ  to  regain  this space (see
  130. section 6.5.3 of the User's Guide).
  131.  
  132.  
  133.  
  134. 6.2  $FLOATCALLS And The 8087
  135.  
  136.      Contrary to the description  in  the  addendum  to  the
  137. Fortran User's Guide, programs compiled with the $FLOATCALLS
  138. option, linked with  the  emulator  library  and  run  on  a
  139. machine  with  an  8087,  will use the 8087 to do the actual
  140. arithmetic.  This means that using this option  will  result
  141. in  a  much  smaller  performance  penalty, when you have an
  142. 8087, than suggested in the addendum.
  143.  
  144.  
  145.  
  146. 6.3  Environment Control And Exception Handling For 8087 Math
  147.  
  148.      The five exceptions required by the IEEE  standard  are
  149. supported  by  both  the  8087  and  the  Real  Math support
  150. routines.  By default, they are disabled.  Contrary  to  the
  151. description  in the MS-Fortran reference (Section 6.2.1) the
  152. $DEBUG metacommand does not control the  handling  of  these
  153. exceptions (you should continue to use it to control Integer
  154. aritmetic errors, however).  Instead, there are  two  memory
  155. locations  that  control  both processors.  These are called
  156. the CONTROL and STATUS words.  The effect of these words  is
  157. discussed below.  You can read or set their values using the
  158. following subroutines:
  159.       SUBROUTINE SCRWQQ (CW)
  160.       INTEGER*2 CW
  161. C Sets the control word to the value in CW
  162.  
  163.       SUBROUTINE LCWRQQ (CW)
  164.       INTEGER*2 CW
  165. C CW is set to the value of the control word
  166.  
  167.       SUBROUTINE SSWRQQ (SW)
  168.       INTEGER*2 SW
  169. C Sets the status word to the value in SW
  170.  
  171.       SUBROUTINE LSWRQQ (SW)
  172.       INTEGER*2 SW
  173. C SW is set to the value of the status word
  174.                                                       Page 4
  175.  
  176.  
  177. The five IEEE Standard exceptions are:
  178.  
  179.  1. Invalid Operation -  Any operation with a NAN (not a
  180.         number),square root(-1), 0*INF, etc. Generally
  181.         returns a NAN.
  182.  2. Divide by zero - Returns properly signed INF.
  183.  3. Overflow - Number greater than maximum representable
  184.         number. Returns INF.
  185.  4. Underflow - Number smaller than smallest valid
  186.         representable number. Returns a Denormal or a zero.
  187.  5. Precision - Occurs whenever a result is subjected to
  188.         rounding error. Informs that the result is not
  189.         exact. Return properly rounded result.
  190.  
  191.      When one of these  exceptional  conditions  occurs  the
  192. appropriate  bit  in the status word is set.  This flag will
  193. remain set to indicate  that  the  exception  occured  until
  194. cleared  by  the  user.   If  the  bit  in  the control word
  195. relating to a given exception is set then that exception  is
  196. masked  and  the operation proceeds with a supplied default.
  197. If the bit is unset any exception of that type generates  an
  198. error  message,  halts  the  operation and your program will
  199. stop.  In either case the exception is ORed into the  STATUS
  200. word.
  201.  
  202.      The CONTROL word is also used  to  set  modes  for  the
  203. internal  arithmetic  required  by the IEEE standard.  These
  204. are:
  205.  
  206.     Rounding Control -  round to nearest (or even), Up,
  207.         Down, or Chop
  208.  
  209.     Precision Control - Determines at which bit of the
  210.         manstissa rounding should take place. (24, 53,
  211.         or 64). Note all results are done to 64 bits
  212.         regardless of the precision control. It only
  213.         affects the rounding in the internal form.
  214.         On storage any result is again rounded to the
  215.         storage precision.
  216.  
  217.     Infinity Control - Affine mode is the familar + and
  218.         - INF style of arithmetic. Projective mode is a
  219.         mode where + and - INF are considered to be the
  220.         same number. The principal effect is to change the
  221.         nature of comparisons (Projective INF does not
  222.         compare with anything but itself).
  223.                                                       Page 5
  224.  
  225.  
  226.  
  227. Format for STATUS BYTE and CONTROL WORD
  228.  
  229.  
  230.            15                     8  7  6  5  4  3  2  1  0
  231. STATUS    |     hi byte unused     |  |  |PE|UE|OE|ZE|  |IE|
  232.                                            |  |  |  |     |
  233.     Precision Exception -------------------+  |  |  |     |
  234.     Underflow Exception ----------------------+  |  |     |
  235.     Overflow Exception --------------------------+  |     |
  236.     Zero Divide Exception --------------------------+     |
  237.     Invalid Exception ------------------------------------+
  238.  
  239.         (All other bits unused, may be either 1 or 0)
  240.  
  241.             15 14 15 12 11-10  9-8   7  6  5  4  3  2  1  0
  242. CONTROL    |  |  |  |IC| RC  | PC  |  |  |PM|UM|OM|ZM|  |IM|
  243.                       |   |     |          |  |  |  |     |
  244.     Infinity Control -+   |     |          |  |  |  |     |
  245.     Round Control --------+     |          |  |  |  |     |
  246.     Precision Control ----------+          |  |  |  |     |
  247.                                            |  |  |  |     |
  248.     Precision Mask ------------------------+  |  |  |     |
  249.     Underflow Mask ---------------------------+  |  |     |
  250.     Overflow Mask -------------------------------+  |     |
  251.     Zero Divide Mask -------------------------------+     |
  252.     Invalid Mask -----------------------------------------+
  253.  
  254.         (All other bits unused, may be either 1 or 0)
  255.  
  256.         Infinity Control
  257.             0 = Projective
  258.             1 = Affine
  259.         Round Control
  260.             00 = Round nearest or even
  261.             01 = Round down (toward -INF)
  262.             10 = Round up   (toward +INF)
  263.             11 = Chop (Truncate toward 0)
  264.         Precision Control
  265.             00 = 24 bits of mantissa
  266.             01 = (reserved)
  267.             10 = 53 bits of mantissa
  268.             11 = 64 bits of mantissa
  269.  
  270.  
  271.